数据库索引是为了便于在各样的操作中定位所需的数据项。根据索引方式可分为顺序索引、散列索引等。
顾名思义,就是对数据进行顺序的索引,如下图所示:
上面这样的一一对应关系,又被称为 稠密索引*(Cluster Index)。
如果恰好数据本身就是依照这个索引顺序排列的,那么这个索引也被称为 主索引(聚集索引)(Primary Index);反之,则为 辅助索引(非聚集索引)(Secondary Index),比如下图:
对于 主索引,我们可以采取 稀疏索引(Dense Index) 的方式节省索引空间:
但有时,直接稠密索引不能被直接放在 Memory 中(因为太大了),所以需要采用 多级索引(Multilevel Index) 的方式。分为 outer index 和 inner index。
实际上 B+ 树索引也属于顺序索引。顾名思义,就是利用 B+ 树建立索引,B+ 树的内容可以参考 BPlus Tree。
在实际的工业应用中,BPlus Tree 往往会和 LSM Tree 结合使用,以减少在 Disk 中反复操作的 overhead(写优化)。
使用 Hash 表进行索引。